home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr37 / nwsf121.zip / NEWSFLSH.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1995-03-20  |  6KB  |  466 lines

  1.     Function FUNCTION000
  2.  
  3.     Function FUNCTION000
  4.  
  5. ;------------------------------------------------------------------------------
  6. ;                                                   .ss.
  7. ;                                                   `²²'
  8. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  9. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  10. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  11. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  12. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  13. ;                                    .sS²°$$$²²°"'       d²°'
  14. ;                                  .$$²  .$$'
  15. ;                                  $$$.,d$$'
  16. ;                                  `²S$$S²'
  17. ;------------------------------------------------------------------------------
  18. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  19. ;------------------------------------------------------------------------------
  20. ; PPE 3.1O (Encryption type I) - Analysis ON - Postprocessing ON
  21. ;------------------------------------------------------------------------------
  22.  
  23.     Boolean  BOOLEAN001
  24.     Boolean  BOOLEAN002
  25.     Boolean  BOOLEAN003
  26.     Boolean  BOOLEAN004
  27.     Boolean  BOOLEAN005
  28.     Integer  INTEGER001
  29.     Integer  INTEGER003
  30.     Integer  INTEGER004
  31.     Integer  INTEGER006
  32.     Integer  INTEGER007
  33.     Integer  INTEGER008
  34.     Integer  INTEGER009
  35.     Integer  INTEGER010
  36.     Integer  INTEGER011
  37.     Integer  INTEGER012
  38.     String   STRING001
  39.     String   STRING002
  40.     String   STRING003
  41.     String   STRING004
  42.     String   STRING005
  43.     String   STRING006
  44.     String   STRING007
  45.     String   STRING008
  46.     String   STRING009
  47.     String   STRING010
  48.     String   STRING011
  49.     String   STRING015
  50.     String   STRING017
  51.     String   STRING018
  52.     String   STRING019
  53.     String   STRING020
  54.     String   STRING021
  55.     String   STRING022
  56.     String   STRING023
  57.     String   STRING024
  58.     String   STRING025
  59.     String   STRING026
  60.     String   STRING027
  61.     String   STRING028
  62.     String   STRING029
  63.     String   STRING030
  64.     String   STRING031
  65.     String   STRING032
  66.     String   STRING033
  67.     Declare  Function FUNCTION001(Date DATE001, Date DATE002) Integer
  68.     Declare  Function FUNCTION002(Integer INTEGER002) String
  69.     Declare  Function FUNCTION004() String
  70.     Declare  Function FUNCTION006(String STRING012, String STRING013, String STRING014, Integer INTEGER005) Boolean
  71.     Declare  Function FUNCTION007(String STRING016) Integer
  72.  
  73. ;------------------------------------------------------------------------------
  74.  
  75.     Goto LABEL004
  76.     End
  77.  
  78. ;------------------------------------------------------------------------------
  79.  
  80.     Function FUNCTION001(Date DATE001, Date DATE002) Integer
  81.  
  82.     Integer  INTEGER002
  83.  
  84.     FUNCTION001 = Abs(DATE001 - DATE002)
  85.  
  86.     EndFunc
  87.  
  88.  
  89. ;------------------------------------------------------------------------------
  90.  
  91.     Function FUNCTION002(Integer INTEGER002) String
  92.  
  93.     Boolean  BOOLEAN001
  94.     String   STRING002
  95.     String   STRING003
  96.  
  97.     BOOLEAN001 = 0
  98.     STRING002 = ""
  99.     :LABEL001
  100.     If (BOOLEAN001) Goto LABEL003
  101.     FGet INTEGER002, STRING002
  102.     If (Ferr(INTEGER002)) Then
  103.         BOOLEAN001 = 1
  104.     Else
  105.         If ((Trim(STRING002, " ") == "") || (Left(STRING002, 1) == ";")) Goto LABEL002
  106.         Goto LABEL003
  107.         :LABEL002
  108.         Goto LABEL001
  109.     Endif
  110.     :LABEL003
  111.     If (BOOLEAN001 == 1) STRING002 = ""
  112.     FUNCTION002 = STRING002
  113.  
  114.     EndFunc
  115.  
  116.     STRING004 = GetEnv("PCBDRIVE") + GetEnv("PCBDIR") + "\PCBOARD.SYS"
  117.     STRING005 = ReadLine(PCBDat(), 27) + "PCBTEXT"
  118.     If (ReadLine(PCBDat(), 74) == 0) Then
  119.         STRING003 = STRING005
  120.     Else
  121.         INTEGER003 = FNext()
  122.         FOpen INTEGER003, STRING004, 0, 0
  123.         FSeek INTEGER003, 80, 0
  124.         FRead INTEGER003, STRING006, 4
  125.         FClose INTEGER003
  126.         STRING005 = Trim(STRING005 + STRING006, " ")
  127.         If (Right(STRING005, 1) == ".") STRING005 = Trim(STRING005, ".")
  128.         STRING003 = STRING005
  129.     Endif
  130.  
  131.     EndFunc
  132.  
  133.  
  134. ;------------------------------------------------------------------------------
  135.  
  136.     Function FUNCTION004() String
  137.  
  138.     String   STRING008
  139.     String   STRING009
  140.     Integer  INTEGER004
  141.     Function FUNCTION005
  142.  
  143.     STRING008 = GetEnv("PCBDRIVE") + GetEnv("PCBDIR") + "\PCBOARD.SYS"
  144.     If (ReadLine(PCBDat(), 74) == 0) Then
  145.         FUNCTION004 = ""
  146.     Else
  147.         INTEGER004 = FNext()
  148.         FOpen INTEGER004, STRING008, 0, 0
  149.         FSeek INTEGER004, 80, 0
  150.         FRead INTEGER004, STRING009, 4
  151.         FClose INTEGER004
  152.         STRING009 = Trim(STRING009, " ")
  153.         If (Left(STRING009, 1) == ".") STRING009 = ""
  154.         FUNCTION004 = STRING009
  155.     Endif
  156.  
  157.     EndFunc
  158.  
  159.     STRING011 = Trim("", " ") + Trim("", " ")
  160.     STRING010 = Abs(XOr(Crc32(0, STRING011), Crc32(0, "")))
  161.  
  162.     EndFunc
  163.  
  164.  
  165. ;------------------------------------------------------------------------------
  166.  
  167.     Function FUNCTION006(String STRING012, String STRING013, String STRING014, Integer INTEGER005) Boolean
  168.  
  169.     String   STRING015
  170.     Function FUNCTION007
  171.  
  172.     STRING015 = Trim(STRING012, " ") + Trim(STRING013, " ")
  173.     FUNCTION006 = (INTEGER005 == Abs(XOr(Crc32(0, STRING015), Crc32(0, STRING014))))
  174.  
  175.     EndFunc
  176.  
  177.  
  178. ;------------------------------------------------------------------------------
  179.  
  180.     Function FUNCTION007(String STRING016) Integer
  181.  
  182.     String   STRING017
  183.  
  184.     If (Left(STRING016, 2) == "~~") Then
  185.         FUNCTION007 = 1
  186.     Else
  187.         FUNCTION007 = 0
  188.     Endif
  189.  
  190.     EndFunc
  191.  
  192.     :LABEL004
  193.     STRING033 = "1.21"
  194.     STRING019 = PPEPath() + "NFHDR"
  195.     STRING018 = PPEPath() + PPEName() + ".CFG"
  196.     INTEGER012 = 8675309
  197.     STRING030 = ""
  198.     STRING031 = "@X0CUNREGISTERED@X07"
  199.     STRING032 = "000000000"
  200.     BOOLEAN004 = 0
  201.     BOOLEAN005 = 0
  202.     STRING024 = "4A"
  203.     STRING023 = "0F"
  204.     STRING025 = "0C"
  205.     STRING027 = "0203050607090A0B0C0D0E0F"
  206.     STRING028 = STRING027 + "01041012141617181A1B1C1D1E1F"
  207.     STRING028 = STRING028 + "202124252628292A2B2C2E2F3031343536383A3B3C3E3F"
  208.     STRING028 = STRING028 + "40414243454748494A4B4C4D4E4F5051525354565758595A5B5C5D5E5F"
  209.     STRING028 = STRING028 + "606162636768696A6B6C6D6E6F70717274757678797A7B7C7E7F"
  210.     STRING029 = STRING027 + "01041012141617181A1B1C1D1E1F"
  211.     STRING029 = STRING029 + "40414243454748494A4B4C4D4E4F5051525354565758595A5B5C5D5E5F"
  212.     STRING029 = STRING029 + "606162636768696A6B6C6D6E6F70717274757678797A7B7C7E7F"
  213.     STRING029 = STRING029 + "202124252628292A2B2C2E2F3031343536383A3B3C3E3F"
  214.     INTEGER008 = FNext()
  215.     If (Exist(PPEPath() + PPEName() + ".KEY")) Then
  216.         FOpen INTEGER008, PPEPath() + PPEName() + ".KEY", 0, 2
  217.         FGet INTEGER008, STRING030
  218.         FGet INTEGER008, STRING031
  219.         FGet INTEGER008, STRING032
  220.         FClose INTEGER008
  221.         BOOLEAN003 = FUNCTION006(STRING030, STRING031, INTEGER012, STRING032)
  222.         If (BOOLEAN003) Goto LABEL005
  223.         STRING030 = ""
  224.         STRING031 = "@X0CUNREGISTERED@X07"
  225.         STRING032 = "000000000"
  226.     Endif
  227.     :LABEL005
  228.     If (TokCount() > 0) Then
  229.         STRING022 = GetToken()
  230.         If (Upper(STRING022) == "MAINT") Then
  231.             BOOLEAN004 = 1
  232.             STRING020 = PPEPath() + "NEWSTMP.$@$"
  233.             If (TokCount() > 0) Then
  234.                 STRING022 = GetToken()
  235.                 BOOLEAN005 = 1
  236.             Endif
  237.             Goto LABEL006
  238.         Endif
  239.         BOOLEAN005 = 1
  240.     Endif
  241.     :LABEL006
  242.     INTEGER008 = FNext()
  243.     FOpen INTEGER008, STRING018, 0, 0
  244.     If (Ferr(INTEGER008)) Then
  245.         If (BOOLEAN005) Goto LABEL007
  246.         Log PPEName() + ".CFG file missing", 0
  247.         End
  248.         Goto LABEL008
  249.         :LABEL007
  250.     Else
  251.         :LABEL008
  252.         INTEGER010 = 0
  253.         While (!Ferr(INTEGER008) && (INTEGER010 < 5)) Do
  254.             STRING021 = FUNCTION002(INTEGER008)
  255.             If (Len(STRING021) == 0) Break
  256.             Select Case (INTEGER010)
  257.                 Case 0
  258.                     STRING017 = PPEPath() + Trim(STRING021, " ")
  259.                     If (Exist(STRING017 + FUNCTION004())) Goto LABEL009
  260.                     If (!Exist(STRING017)) End
  261.                     Goto LABEL010
  262.                     :LABEL009
  263.                     STRING017 = STRING017 + FUNCTION004()
  264.                     :LABEL010
  265.                 Case 1
  266.                     If (Len(STRING021) == 0) STRING021 = "120"
  267.                     INTEGER011 = S2I(STRING021, 10)
  268.                 Case 2
  269.                     If (Len(STRING021) == 0) STRING021 = "4A"
  270.                     If (Upper((Left(STRING021, 2) == "RA"))) Then
  271.                         INTEGER007 = Random(Len(STRING028) - 1) + 1
  272.                         INTEGER007 = INTEGER007 - 1 - INTEGER007 % 2
  273.                         STRING021 = Mid(STRING028, INTEGER007, 2)
  274.                     Endif
  275.                     STRING024 = Trim(STRING021, " ")
  276.                     STRING024 = "@X" + STRING024
  277.                 Case 3
  278.                     If (Len(STRING021) == 0) STRING021 = "0F"
  279.                     If (Upper((Left(STRING021, 2) == "RA"))) Then
  280.                         INTEGER007 = Random(Len(STRING027) - 1) + 1
  281.                         INTEGER007 = INTEGER007 - 1 - INTEGER007 % 2
  282.                         STRING021 = Mid(STRING027, INTEGER007, 2)
  283.                     Endif
  284.                     STRING023 = Trim(STRING021, " ")
  285.                     STRING023 = "@X" + STRING023
  286.                 Case 4
  287.                     If (Len(STRING021) == 0) STRING021 = "0C"
  288.                     If (Upper((Left(STRING021, 2) == "RA"))) Then
  289.                         INTEGER007 = Random(Len(STRING029) - 1) + 1
  290.                         INTEGER007 = INTEGER007 - 1 - INTEGER007 % 2
  291.                         STRING021 = Mid(STRING029, INTEGER007, 2)
  292.                     Endif
  293.                     STRING025 = Trim(STRING021, " ")
  294.                     STRING025 = "@X" + STRING025
  295.                 Case Else
  296.                     Log PPEName() + ".CFG SELECT BLOCK ERROR", 0
  297.             End Select
  298.             Inc INTEGER010
  299.         EndWhile
  300.         FClose INTEGER008
  301.     Endif
  302.     If (BOOLEAN005) STRING017 = STRING022
  303.     If (Exist(STRING017 + FUNCTION004())) Goto LABEL011
  304.     If (!Exist(STRING017)) End
  305.     Goto LABEL012
  306.     :LABEL011
  307.     STRING017 = STRING017 + FUNCTION004()
  308.     :LABEL012
  309.     If (Len(STRING017) == 0) End
  310.     Cls
  311.     PrintLn "@X0ANewsFlash Version " + STRING033
  312.     If (BOOLEAN003) Then
  313.         Print "@X0ARegistered to: @X0E" + STRING031
  314.         PrintLn "  @X0A #@X0E" + STRING032 + "@X07"
  315.     Else
  316.         PrintLn STRING031
  317.     Endif
  318.     If (BOOLEAN004) Goto LABEL013
  319.     If (Exist(STRING019)) DispFile STRING019, 1 + 4 + 2
  320.     INTEGER008 = FNext()
  321.     STRING026 = CurColor()
  322.     FOpen INTEGER008, STRING017, 0, 0
  323.     FGet INTEGER008, STRING021
  324.     While (!Ferr(INTEGER008) && !Abort()) Do
  325.         INTEGER010 = FUNCTION007(STRING021)
  326.         Select Case (INTEGER010)
  327.             Case 0
  328.                 PrintLn STRING023 + STRING021
  329.                 Color STRING026
  330.             Case 1
  331.                 STRING021 = Trim(STRING021, "~~")
  332.                 If (FUNCTION001(Date(), STRING021) > INTEGER011) Break
  333.                 Newline
  334.                 Print STRING024 + STRING021
  335.                 Color STRING026
  336.                 Newline
  337.                 Print STRING025 + "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
  338.                 Color STRING026
  339.                 Newline
  340.         End Select
  341.         FGet INTEGER008, STRING021
  342.     EndWhile
  343.     FCloseAll
  344.     Goto LABEL016
  345.     :LABEL013
  346.     INTEGER008 = FNext()
  347.     FOpen INTEGER008, STRING017, 0, 0
  348.     INTEGER009 = FNext()
  349.     FCreate INTEGER009, STRING020, 1, 3
  350.     FGet INTEGER008, STRING021
  351.     :LABEL014
  352.     If (Ferr(INTEGER008)) Goto LABEL015
  353.     INTEGER010 = FUNCTION007(STRING021)
  354.     Select Case (INTEGER010)
  355.         Case 0
  356.             FPutLn INTEGER009, STRING021
  357.             SPrintLn STRING021
  358.         Case 1
  359.             STRING021 = Trim(STRING021, "~~")
  360.             If (FUNCTION001(Date(), STRING021) > INTEGER011) Goto LABEL015
  361.             STRING021 = "~~" + STRING021
  362.             FPutLn INTEGER009, STRING021
  363.             SPrintLn STRING021
  364.     End Select
  365.     FGet INTEGER008, STRING021
  366.     Goto LABEL014
  367.     :LABEL015
  368.     FCloseAll
  369.     Copy STRING020, STRING017
  370.     Delete STRING020
  371.     Log "NewsFlash Maintanence Run Completed -" + STRING017, 0
  372.     :LABEL016
  373.     End
  374.  
  375. ;------------------------------------------------------------------------------
  376. ;
  377. ; Usage report (before postprocessing)
  378. ;
  379. ; ■ Statements used :
  380. ;
  381. ;    6       End
  382. ;    1       Cls
  383. ;    3       Color 
  384. ;    59      Goto 
  385. ;    93      Let 
  386. ;    3       Print 
  387. ;    4       PrintLn 
  388. ;    47      If 
  389. ;    1       DispFile 
  390. ;    1       FCreate 
  391. ;    6       FOpen 
  392. ;    4       FClose 
  393. ;    8       FGet 
  394. ;    2       FPutLn 
  395. ;    1       Delete 
  396. ;    3       Log 
  397. ;    1       Inc 
  398. ;    3       Newline
  399. ;    2       SPrintLn 
  400. ;    2       FSeek 
  401. ;    2       FRead 
  402. ;    1       Copy 
  403. ;    2       FCloseAll
  404. ;    7       EndFunc
  405. ;
  406. ;
  407. ; ■ Functions used :
  408. ;
  409. ;    3       %
  410. ;    48      +
  411. ;    10      -
  412. ;    28      ==
  413. ;    1       <
  414. ;    4       >
  415. ;    35      !
  416. ;    2       &&
  417. ;    1       ||
  418. ;    9       Len(
  419. ;    4       Upper()
  420. ;    3       Mid()
  421. ;    6       Left()
  422. ;    1       Right()
  423. ;    5       Ferr()
  424. ;    1       Abort()
  425. ;    14      Trim()
  426. ;    3       Random()
  427. ;    2       Date()
  428. ;    3       PCBDat()
  429. ;    6       PPEPath()
  430. ;    3       ReadLine()
  431. ;    2       GetToken()
  432. ;    4       GetEnv()
  433. ;    6       Exist()
  434. ;    1       S2I()
  435. ;    2       XOr()
  436. ;    3       Abs()
  437. ;    5       PPEName()
  438. ;    1       CurColor()
  439. ;    2       TokCount()
  440. ;    4       Crc32()
  441. ;    7       FNext()
  442. ;
  443. ;------------------------------------------------------------------------------
  444. ;
  445. ; Analysis flags : d
  446. ;
  447. ; d - Access PCBOARD.DAT ■ 2
  448. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  449. ;     for many PPE so they can find various informations on the system
  450. ;     (system paths, max number of lines in messages, ...) but it may also
  451. ;     be a way to gather vital informations.
  452. ;     ■ Search for : PCBDAT()
  453. ;
  454. ;------------------------------------------------------------------------------
  455. ;
  456. ; Postprocessing report
  457. ;
  458. ;    0       For/Next
  459. ;    2       While/EndWhile
  460. ;    13      If/Then or If/Then/Else
  461. ;    3       Select Case
  462. ;
  463. ;------------------------------------------------------------------------------
  464. ;                 AEGiS Corp - Break the routines, code against the machines!
  465. ;------------------------------------------------------------------------------
  466.